#include <stdio.h> // perror()
#include <fcntl.h> // open()
#include <stdlib.h> // exit()
#include <unistd.h> // read()/write()/close()

/**
 * 需求：利用系统调用实现love.txt的一个备份love2.txt，并在控制台输出文件内容,
 *      且多次执行在love2.txt再累加一份内容
 */

int main(int argc, char const *argv[])
{
    // 打开读文件  love.txt
    int fd = open("love.txt", O_RDONLY);
    if (fd == -1) {
        printf("打开读文件失败\n");
        return -1;
    }
    // 打开写文件  love2.txt
    int fd2 = open("love2.txt", O_CREAT |O_WRONLY| O_APPEND, 0644);
    if (fd2 == -1) {
        printf("打开写文件失败\n");
        return -1;
    }

    // 不断边读边写，并输出到控制台
    char buf[1024];
    ssize_t read_len;
    while((read_len = read(fd, buf, sizeof(buf))) > 0)
    {
        // 写入love2.txt
        write(fd2, buf, read_len);
        // 输出到控制台
        write(STDOUT_FILENO, buf, read_len);
    }

    // 关闭读文件和写文件
    close(fd);
    close(fd2);

    return 0;
}